package com.flying.inherit.member;

/**
 * @author 刘鹏飞
 * @ClassName TestMemberVirable
 * @Date 2024/12/9 22:37
 * @Created by 刘鹏飞
 * @Description 继承以后成员变量的特点
 */
public class TestMemberVariable {
    public static void main(String[] args) {

        /**
         * 子类继承以后，子类可以访问父类的部分成员变量
         * 如果父类和子类在同一个堡垒，除了private修饰的成员变量以外，都能访问
         * 如果父类和子类不在同一个包里，子类可以访问public和protected修饰的成员变量
         * 被private修饰的成员变量也可以理解为继承了，但是不能直接访问，需要提供get/set方法访问
         *
         * 如果子类里面没有和父类继承过来的同名的成员变量，在子类里直接访问。，访问的是父类的成员变量。
         * 如果子类里有和父类同名的成员变量，如果想要访问父类的成员变量，使用super关键字
         */
        Son son = new Son();
        System.out.println(son.name);
        son.test();
        System.out.println(Father.nums);
    }

}


class Son extends Father {

    int y = 5;

    public void test() {

        System.out.println(x);
        System.out.println(y);
        System.out.println(this.y);
        System.out.println(super.y);
    }
}


class Father {

    String name;
    private int age;
    public int x = 10;
    int y = 3;


    static int nums = 13223;


}